# AS 需要大写 不然会有警告,AS是声明多阶段构建用的
FROM node:16-alpine AS build-stage

WORKDIR /admim

COPY .npmrc package.json yarn.lock ./

# --mount=type=cache 需要使用buildkit 暂时发现在dockerdesktop发现没法开启 如果得去掉这个才能执行
RUN --mount=type=cache,id=yarn-store,target=/root/.yarn-store \
    yarn install --frozen-lockfile \

#把宿主机当前目录的所有文件复制到容器的当前工作目录中，会排除dockerignore中的文件
COPY . .

#构建时再传arg参数
ARG NODE_ENV=""
# env命令会列出容器内环境变量 linux中也是，测试发现ARG参数会都展示在环境变量中
RUN env ${NODE_ENV} yarn build:prod

## -- stage: dist => nginx --
FROM nginx:alpine

ENV TZ=Asia/Shanghai

COPY ./nginx.conf /etc/nginx/conf.d/default.conf
#表示从名为 build-stage 的构建阶段中复制文件
COPY --from=build-stage /admim/dist /usr/share/nginx/html

EXPOSE 80
